import PropTypes from 'prop-types'
import React, { Component } from 'react'
console.log(PropTypes)
export class A {

}
export class B extends A {

}
export default class ValidateComp extends Component {
  // static defaultProps = {
  //   a:1,
  //   b:2,
  //   c:3
  // }
  
  static propTypes = {
    a:PropTypes.number.isRequired, // a属性必须为数字类型
    b:PropTypes.bool.isRequired, // 必须是个布尔
    onClick: PropTypes.func,  // 必须是个函数
    c:PropTypes.any,
    d:PropTypes.node.isRequired, //d必填，而且必须是一个可以渲染的内容，字符串、数字、React元素
    e:PropTypes.element,  // react元素
    F:PropTypes.elementType, // 必须是一个 组件类型

    g:PropTypes.instanceOf(A), // g必须是A的实例
    sex:PropTypes.oneOf(['男','女']), // 属性必须是数组当中的一个
    m: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), // 属性类型必须是数组当中的一个
    h:PropTypes.arrayOf(PropTypes.number), // 属性必须是数字数组
    i:PropTypes.objectOf(PropTypes.number),
    
    j:PropTypes.shape({  // 属性必须满足该对象的要求
        a:PropTypes.number,
        b:PropTypes.number.isRequired,
        address:PropTypes.shape({
          
        })
    }),
    score:function(props,propName,componentName){
      console.log(props)
      console.log(propName)
      console.log(componentName)
      PropTypes.checkPropTypes(
        {
          score:PropTypes.number.isRequired
        },
        props,
        'prop'
      )
    }
  }
  
  render() {
    const F = this.props.F
    return (
      <div>
        a:{this.props.a}
        b:{this.props.b}
        c:{this.props.c}
        {this.props.d}
        {this.props.e}
        {/* {this.props.e} */}
        <F >F</F>
        {this.props.sex}
      </div>
    )
  }
}
// export default ValidateComp